home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib11.dsk / TOUGH TFILE REFORMATTER.bas < prev   
BASIC Source File  |  2023-02-26  |  3KB  |  90 lines

  1. 10  REM  *******************************
  2. 11  REM  *   TOUGH TFILE REFORMATTER   *
  3. 12  REM  *      BY HAL CLARK           *
  4. 13  REM  *     COPYRIGHT (C) 1982      *
  5. 14  REM  *     BY MICRO-SPARC INC      *
  6. 15  REM  *     LINCOLN, MA. 01773      *
  7. 16  REM  *******************************
  8. 20  REM 
  9. 80  HOME : VTAB 6
  10. 90 CR$ =  CHR$(13): REM  CARRIAGE RETURN
  11. 100 D$ =  CHR$(4): REM  CTRL D
  12. 110 SP$ = " ": REM  SPACE
  13. 120 RR = 0:PS = 0: REM  REQUIRED RETURN AND PREV SPACE FLAGS
  14. 130  DIM PG$(200)
  15. 140  PRINT 
  16. 150  PRINT : PRINT "ENTER NAME OF FILE TO REFORMAT ": INPUT "";NM$
  17. 160  IF NM$ = ""  THEN  PRINT D$;"CATALOG": GOTO 150
  18. 165  HOME 
  19. 170  PRINT D$;"OPENTFILE-";NM$
  20. 180  PRINT D$;"READTFILE-";NM$
  21. 190  INPUT TL: REM  TOTAL INPUT LINES
  22. 200 NL = TL: REM  # OF SAVED LINES
  23. 210  INPUT LL: REM  LING LENGTH
  24. 220  INPUT TV: REM  TAB VALUE
  25. 230  PRINT D$
  26. 240  PRINT "CURRENT LINE LENGTH -";LL -1
  27. 250  INPUT "ENTER NEW LINE LENGTH =";PW
  28. 260  HOME : PRINT : PRINT  TAB( 14);"REFORMATTING"
  29. 270  PRINT  TAB( (40 -(6 + LEN(NM$))/2);"TFILE-";NM$: PRINT : PRINT 
  30. 280  PRINT  TAB( 14);"LINE LENGTH"
  31. 290  PRINT  TAB( 10);"OLD "; TAB( 25);"NEW"
  32. 300  PRINT  TAB( 10);LL -1; TAB( 25);PW: PRINT 
  33. 310  PRINT : PRINT  TAB( 12);"PROCESSING LINE"
  34. 320  PRINT  TAB( 10);"TOTAL"; TAB( 20);"INPUT "; TAB( 30);"OUTPUT": PRINT  TAB( 10);TL: PRINT 
  35. 330  PRINT : PRINT "PRESS 'A' TO ABORT"
  36. 340 PS = 0:PH = 0: REM  PREV SPACE AND HYPHEN
  37. 350 I = 1:K = 1:PG$(I) = "": GOSUB 670
  38. 360  REM  MAIN INPUT LOOP
  39. 370  IF J = 1  AND K = 1  THEN TB = 1
  40. 380 CC$ = MOD$(CL$,J,1):J = J +1
  41. 390  IF PH = 1  AND CC$ = SP$  THEN  GOSUB 660: GOTO 480
  42. 400  IF PS = 1  AND CC$ = SP$  THEN 470
  43. 410  IF CC$ = SP$  THEN LS = K
  44. 420  IF TB = 1  AND CC$ = SP$  THEN 460
  45. 430 TB = 0
  46. 440 PH = 0: IF CC$ = "-"  THEN PH = 1
  47. 450 PS = 0: IF CC$ = SP$  THEN PS = 1
  48. 460 PG$(I) = PG$(I) +CC$:K = K +1
  49. 470  REM 
  50. 480  IF J < = CL  THEN 520
  51. 490  IF RR = 1  THEN  GOSUB 670: GOTO 530
  52. 500  IF PH = 1  THEN  GOSUB 660: GOSUB 670: GOTO 520
  53. 510 PG$(I) = PG$(I) +SP$:LS = K:K = K +1: GOSUB 670
  54. 520  IF K < = PW  THEN 630
  55. 530 I = I +1:PG$(I) = "":K = K -LS
  56. 540  IF K <2  THEN K = 1: GOTO 570
  57. 550 PG$(I) =  RIGHT$(PG$(I -1),K -1)
  58. 560 PG$(I -1) =  LEFT$(PG$(I -1),LS)
  59. 570 LS = 1:PS = 0:PH = 0
  60. 580  VTAB (19): HTAB (30): PRINT I -1
  61. 590  IF  PEEK( -16384) <128  THEN 630: REM  NO KEY WAITING
  62. 600  GET A$: POKE  -16368,0: IF A$ < >"A"  THEN 630
  63. 610  HOME : INPUT "SAVE OUTPUT? ";A$: IF A$ = "Y"  THEN 750
  64. 620  GOTO 810
  65. 630  IF NL <0  THEN 750
  66. 640  GOTO 360
  67. 650  REM  HYPHEN DROP SUBROUTINE
  68. 660 PG$(I) =  LEFT$(PG$(I), LEN(PG$(I)) -1):K = K -1:PH = 0: RETURN 
  69. 670  REM  GET LINE SUBROUTINE
  70. 680  PRINT D$;"READ TFILE-";NM$
  71. 690  INPUT CL$: REM  CURRENT LINE
  72. 700 CL =  LEN(CL$):RR = 0: REM  RECQUIRE RETURN
  73. 710  IF CL < <LL -1  THEN RR = 1: REM  REQUIRED RETURN NEEDED
  74. 720  PRINT D$:J = 1
  75. 730  VTAB (19): HTAB (20): PRINT TL -NL
  76. 740 NL = NL -1
  77. 750  PRINT D$;"OPEN TFILE-NEW ";NM$
  78. 760  PRINT D$;"WRITE TFILE-NEW ";NM$
  79. 770  PRINT I -1: PRINT PW +1: PRINT TV
  80. 780  FOR J = 1 TO I
  81. 790  PRINT  CHR$(34);PG$(J)
  82. 800  NEXT J
  83. 810  PRINT D$;"CLOSE"
  84. 820  PRINT D$
  85. 830  HOME 
  86. 840  PRINT "REFORMAT ANOTHER DOCUMENT? "
  87. 850  INPUT " (Y= YES, N=NO) ";A$
  88. 860  IF A$ = "Y"  THEN 20
  89. 870  TEXT : HOME 
  90. 880  PRINT "END OF REFORMATTING.": END